package cn.tedu.ivos.base.file;

import cn.tedu.ivos.base.response.JsonResult;
import com.github.xiaoymin.knife4j.annotations.ApiOperationSupport;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.UUID;

@Tag(name = "图片上传模块")
@Slf4j
@RestController
@RequestMapping("/v1/file/")
public class UploadController {
    @Operation(summary = "图片上传")
    @ApiOperationSupport(order = 10)
    @PostMapping("upload")
    public JsonResult upload(MultipartFile file) throws IOException {
        String fileName = file.getOriginalFilename();//获取原始文件名
        String suffix = fileName.substring(fileName.lastIndexOf("."));//截取后缀名
        fileName = UUID.randomUUID()+suffix;//生成新的不重复的随机文件名
        String dirPath = "d:/files";//指定文件保存的目录,这个目录在配置文件设置成了静态资源文件夹
        SimpleDateFormat sdf = new SimpleDateFormat("/yyyy/MM/dd/");//指定日期输出格式
        String datePath = sdf.format(new Date());//获取当前日期,根据上面的格式生成日期路径
        File dirFile = new File(dirPath+datePath);//创建目录对象
        if(!dirFile.exists()){//判断目录是否存在
            dirFile.mkdirs();//如果目录不存在,创建多层目录
        }
        String filePath = dirPath+datePath+fileName;//拼接完整的图片路径也就是图片存放位置
        file.transferTo(new File(filePath));//将上传的文件保存到指定位置
        return JsonResult.ok(datePath+fileName);//返回图片路径
    }
    @Operation(summary = "图片删除")
    @ApiOperationSupport(order = 20)
    @PostMapping("remove")
    public JsonResult remove(String imgUrl){
        log.info("删除图片:{}",imgUrl);
        new File("d:/files"+imgUrl).delete();
        return JsonResult.ok();
    }
}
